// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import './directives'
import './components'
import store from './store'
// 引入插件
import VueSweetalert2 from './plugins/vue-sweetalert2'
import Message from './plugins/message'
import './filters'
import { mockArticles } from './mock/data'
import ls from './utils/localStorage'
import './mock'
import axios from 'axios'

// 使用插件
Vue.use(VueSweetalert2)
Vue.use(Message)

// 将axios 添加到 Vue.prototype 上， 使其在实例内部的所有组件中可用
Vue.prototype.$axios = axios

// 设置 false 以阻止 Vue 在启动时生成生产提示
Vue.config.productionTip = false

const AddMockData = (() => {
    //是否加入测试数据
    const isAddMockData = true
    // 用户数据
    let userArticles = ls.getItem('articles')

    if (Array.isArray(userArticles)) {
        userArticles = userArticles.filter(article => parseInt(article.uid) === 1)
    } else {
        userArticles = []
    }

    if (isAddMockData) {
        // 合并用户数据和测试数据，使用合并值作为所有文章
        store.commit('UPDATE_ARTICLES', [...userArticles, ...mockArticles(60)])
    } else {
        // 使用用户数据作为所有文章
        store.commit('UPDATE_ARTICLES', userArticles)
    }
})()

// eslint 配置，允许 new 一个实例后不赋值，我们没有使用 eslint，如果有，则下一行注释不可缺少
/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    store,
    components: { App },
    template: '<App/>',
})